package com.ylxin.mybatis.crud.mapper;

import com.ylxin.mybatis.crud.pojo.TbUser;
import com.ylxin.mybatis.crud.pojo.TbUserDto;
import org.apache.ibatis.annotations.Param;
import sun.security.util.Password;

import java.util.List;
import java.util.Map;

/**
 * @author 29048
 * @version V1.0
 * @Project mybatis
 * @Package com.ylxin.mybatis.crud.mapper
 * @Description: '
 * Create by 杨立新 @Date 2022/8/23 20:09
 */
public interface UserMapper {

    //查找/读取
    TbUser findById(Long id);
    /**
     * @Param("username")  代表告诉mybatis 当前参数的名字是什么，在xml中必须使用这个对应的名字来获取参数，和形参的名字无关，只和注解的参数有关
     * @param password
     * @param userName
     * @return
     */
    TbUser findByUserNameAndPassword(@Param("password") String password, @Param("username") String userName);

    /**
     * 将参数放到一个Map中传递出去
     * @param paramMap,因为Map 不是属性名，所以不用自定义名称@Param(String)
     * @return
     */
    TbUser findByUserNameAndPasswordMap(Map paramMap);

    TbUser findByUserNameAndPasswordMap2(@Param("map") Map paramMap);

    /**
     * 参数保存在了一个对象中,然后传递出去。
     * @param userDto
     * @return
     */
    TbUser findByUserNameAndPasswordPojo(TbUserDto userDto);

    /**
     * 模糊搜索，可能会返回多条，只要存在可能就要使用集合来接收
     * @param emailLike
     * @return
     */
    List<TbUser> findByEmailLike(String emailLike);

    List<TbUser> findAll();


    //删除
    int deleteById(Long userId);



    //更新
    int updateUserById(TbUser tbUser);



    //添加
    void addUser(TbUser tbUser);

    //添加并获取刚刚添加的自增id   last_insert_id()
    void addUserAndGetId(TbUser tbUser);
}
